const utils = {};

// date可接收日期格式或者时间戳格式
Date.prototype.Format = function (fmt) {
  var o = {
    "M+": this.getMonth() + 1, //月份
    "d+": this.getDate(), //日
    "h+": this.getHours(), //小时
    "m+": this.getMinutes(), //分
    "s+": this.getSeconds(), //秒
    "q+": Math.floor((this.getMonth() + 3) / 3), //季度
    S: this.getMilliseconds(), //毫秒
  };
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(
      RegExp.$1,
      (this.getFullYear() + "").substr(4 - RegExp.$1.length)
    );
  for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
      );
  return fmt;
};

// 将当前时间转换为整点和30分
utils.changeTime = function (date) {
  if (Number(date.substring(14, 16)) >= 0 && Number(date.substring(14, 16)) < 30) {
    return new Date(String(date).substring(0, 13) + ":30:00").Format(
      "yyyy/MM/dd hh:mm:ss"
    );
  } else {
    return new Date(
      new Date(String(date).substring(0, 13) + ":00:00").getTime() + 3600000
    ).Format("yyyy/MM/dd hh:mm:ss");
  }
};

// 获取比当前时间快一分钟
utils.changeTimeMinutes = function (date) {
  return new Date(
    new Date(String(date)).getTime() + 60000
  ).Format("yyyy/MM/dd hh:mm:ss");
}

// 随机数(正负)
utils.randomFunc = function (value) {
  return Math.floor(Math.random() * value * 2 - value);
}

// 设置最小值偏移的随机数
utils.randomFuncPlus = function (value, small) {
  return Math.floor(Math.random() * value + small);
}

// 时间格式是否正确
utils.isCorrectForTimeFormat = function(time) {
  return String(new Date(time).Format("yyyy/MM/dd hh:mm:ss")) === String(time);
};

module.exports = utils;
